home *** CD-ROM | disk | FTP | other *** search
/ Champak 49 / Volume 49 - JOGO DISK .iso / Games / feverfrenzy-demo.swf / scripts / DefineSprite_178 / frame_1 / DoAction.as
Encoding:
Text File  |  2007-09-28  |  17.1 KB  |  857 lines

  1. function reset()
  2. {
  3.    setSexo(mSexo);
  4.    mTargetArray = new Array();
  5.    stopMoving();
  6. }
  7. function setSexo(m)
  8. {
  9.    mSexo = m;
  10.    gotoAndStop(m + 1);
  11.    stopdown();
  12.    mHandLeft_mc.setInHand();
  13.    liberaMao(mHandLeft_mc);
  14.    mHandRight_mc.setInHand();
  15.    liberaMao(mHandRight_mc);
  16.    mbHandVisible = true;
  17.    mbSwapHands = false;
  18.    mbDiagnosing = false;
  19. }
  20. function hasEmptyHand()
  21. {
  22.    return mHandLeft_mc.isVazia() || mHandRight_mc.isVazia();
  23. }
  24. function isCarrying()
  25. {
  26.    return !mHandLeft_mc.isVazia() || !mHandRight_mc.isVazia();
  27. }
  28. function hasReceipt()
  29. {
  30.    return mHandLeft_mc.isReceita() || mHandRight_mc.isReceita();
  31. }
  32. function entregaReceitas()
  33. {
  34.    var _loc1_ = new Array();
  35.    if(mHandLeft_mc.isReceita())
  36.    {
  37.       receita = mHandLeft_mc.getReceita();
  38.       _loc1_.push(receita);
  39.       liberaMao(mHandLeft_mc);
  40.    }
  41.    if(mHandRight_mc.isReceita())
  42.    {
  43.       receita = mHandRight_mc.getReceita();
  44.       _loc1_.push(receita);
  45.       liberaMao(mHandRight_mc);
  46.    }
  47.    updateItem();
  48.    return _loc1_;
  49. }
  50. function getMaoVazia()
  51. {
  52.    if(!mHandLeft_mc._visible)
  53.    {
  54.       return mHandLeft_mc;
  55.    }
  56.    if(!mHandRight_mc._visible)
  57.    {
  58.       return mHandRight_mc;
  59.    }
  60.    return null;
  61. }
  62. function pegaLencol()
  63. {
  64.    maovazia = getMaoVazia();
  65.    if(maovazia != null)
  66.    {
  67.       maovazia.setLencol();
  68.       maovazia._visible = true;
  69.       if(maovazia == mHandLeft_mc)
  70.       {
  71.          mMed_mc.addEsquerda();
  72.       }
  73.       else
  74.       {
  75.          mMed_mc.addDireita();
  76.       }
  77.       updateItem();
  78.    }
  79. }
  80. function pegaRemedio(receita)
  81. {
  82.    maovazia = getMaoVazia();
  83.    if(maovazia != null)
  84.    {
  85.       maovazia.setRemedio(receita);
  86.       maovazia._visible = true;
  87.       if(maovazia == mHandLeft_mc)
  88.       {
  89.          mMed_mc.addEsquerda();
  90.       }
  91.       else
  92.       {
  93.          mMed_mc.addDireita();
  94.       }
  95.       updateItem();
  96.    }
  97. }
  98. function hasLencol()
  99. {
  100.    return mHandLeft_mc.isLencol() || mHandRight_mc.isLencol();
  101. }
  102. function liberaLencol()
  103. {
  104.    count = 0;
  105.    if(mHandLeft_mc.isLencol())
  106.    {
  107.       liberaMao(mHandLeft_mc);
  108.       count++;
  109.    }
  110.    if(mHandRight_mc.isLencol())
  111.    {
  112.       liberaMao(mHandRight_mc);
  113.       count++;
  114.    }
  115.    updateItem();
  116.    return count;
  117. }
  118. function swapHands()
  119. {
  120.    var _loc1_ = {x:mHandLeft_mc._x,y:mHandLeft_mc._y};
  121.    var _loc2_ = {x:mHandRight_mc._x,y:mHandRight_mc._y};
  122.    mHandRight_mc._x = _loc1_.x;
  123.    mHandRight_mc._y = _loc1_.y;
  124.    mHandLeft_mc._x = _loc2_.x;
  125.    mHandLeft_mc._y = _loc2_.y;
  126.    mbSwapHands = !mbSwapHands;
  127. }
  128. function updateItem()
  129. {
  130. }
  131. function stopleft()
  132. {
  133.    if(mbSwapHands)
  134.    {
  135.       swapHands();
  136.    }
  137.    mMed_mc.stopleft();
  138. }
  139. function stopright()
  140. {
  141.    if(mbSwapHands)
  142.    {
  143.       swapHands();
  144.    }
  145.    mMed_mc.stopright();
  146. }
  147. function stopup()
  148. {
  149.    if(!mbSwapHands)
  150.    {
  151.       swapHands();
  152.    }
  153.    mMed_mc.stopup();
  154. }
  155. function stopdown()
  156. {
  157.    if(mbSwapHands)
  158.    {
  159.       swapHands();
  160.    }
  161.    mMed_mc.stopdown();
  162. }
  163. function walkleft()
  164. {
  165.    if(mbSwapHands)
  166.    {
  167.       swapHands();
  168.    }
  169.    mMed_mc.walkleft();
  170. }
  171. function walkright()
  172. {
  173.    if(mbSwapHands)
  174.    {
  175.       swapHands();
  176.    }
  177.    mMed_mc.walkright();
  178. }
  179. function walkup()
  180. {
  181.    if(!mbSwapHands)
  182.    {
  183.       swapHands();
  184.    }
  185.    mMed_mc.walkup();
  186. }
  187. function walkdown()
  188. {
  189.    if(mbSwapHands)
  190.    {
  191.       swapHands();
  192.    }
  193.    mMed_mc.walkdown();
  194. }
  195. function hey()
  196. {
  197.    mMed_mc.hey();
  198. }
  199. function dontknow()
  200. {
  201.    mMed_mc.dontknow();
  202. }
  203. function diagnose(paciente)
  204. {
  205.    mMed_mc.diagnose();
  206.    hideHands();
  207.    mbDiagnosing = true;
  208.    mDiagnoseTime = getTimer();
  209.    mPaciente = paciente;
  210.    mPaciente.diagnosing();
  211. }
  212. function isDiagnosing()
  213. {
  214.    return mbDiagnosing;
  215. }
  216. function hasMedicineOf(paciente)
  217. {
  218.    if(mHandLeft_mc.isRemedio())
  219.    {
  220.       receita = mHandLeft_mc.getReceita();
  221.       if(receita.id == paciente.getID())
  222.       {
  223.          return true;
  224.       }
  225.    }
  226.    if(mHandRight_mc.isRemedio())
  227.    {
  228.       receita = mHandRight_mc.getReceita();
  229.       if(receita.id == paciente.getID())
  230.       {
  231.          return true;
  232.       }
  233.    }
  234.    return false;
  235. }
  236. function giveMedicineTo(paciente)
  237. {
  238.    if(mHandLeft_mc.isRemedio())
  239.    {
  240.       receita = mHandLeft_mc.getReceita();
  241.       if(receita.id == paciente.getID())
  242.       {
  243.          liberaMao(mHandLeft_mc);
  244.       }
  245.    }
  246.    if(mHandRight_mc.isRemedio())
  247.    {
  248.       receita = mHandRight_mc.getReceita();
  249.       if(receita.id == paciente.getID())
  250.       {
  251.          liberaMao(mHandRight_mc);
  252.       }
  253.    }
  254.    paciente.receiveMedicine();
  255. }
  256. function liberaPaciente(paciente)
  257. {
  258.    if(mHandLeft_mc.isRemedio() || mHandLeft_mc.isReceita())
  259.    {
  260.       receita = mHandLeft_mc.getReceita();
  261.       if(receita.id == paciente.getID())
  262.       {
  263.          liberaMao(mHandLeft_mc);
  264.       }
  265.    }
  266.    if(mHandRight_mc.isRemedio() || mHandRight_mc.isReceita())
  267.    {
  268.       receita = mHandRight_mc.getReceita();
  269.       if(receita.id == paciente.getID())
  270.       {
  271.          liberaMao(mHandRight_mc);
  272.       }
  273.    }
  274. }
  275. function liberaMao(mao)
  276. {
  277.    mao.setID(-1);
  278.    mao._visible = false;
  279.    if(mao == mHandLeft_mc)
  280.    {
  281.       mMed_mc.removeEsquerda();
  282.    }
  283.    else
  284.    {
  285.       mMed_mc.removeDireita();
  286.    }
  287. }
  288. function addZOrder(obj)
  289. {
  290.    mZOrderObjects.push(obj);
  291. }
  292. function updateZOrder()
  293. {
  294.    if(this._y < -120)
  295.    {
  296.       this.swapDepths(_parent.mCamaArray[1].getDepth() - 5);
  297.    }
  298.    else if(this._y > 0)
  299.    {
  300.       this.swapDepths(_parent.mCamaArray[3].getDepth() + 5);
  301.    }
  302.    else
  303.    {
  304.       this.swapDepths(_parent.mCamaArray[1].getDepth() + 5);
  305.    }
  306. }
  307. function moveToPosition(posX, posY)
  308. {
  309.    var _loc1_ = {x:posX,y:posY};
  310.    if(mTargetArray.length == 0)
  311.    {
  312.       mTargetX = posX;
  313.       mTargetY = posY;
  314.    }
  315.    mTargetArray.push(_loc1_);
  316.    mbMoving = true;
  317. }
  318. function stopMoving()
  319. {
  320.    mDirX = 0;
  321.    mDirY = 0;
  322.    mbMoving = false;
  323.    mTargetArray.shift();
  324.    if(mTargetArray.length > 0)
  325.    {
  326.       mbMoving = true;
  327.       mTargetX = mTargetArray[0].x;
  328.       mTargetY = mTargetArray[0].y;
  329.       defineDirection();
  330.    }
  331.    else
  332.    {
  333.       stopdown();
  334.    }
  335. }
  336. function isMoving()
  337. {
  338.    return mbMoving;
  339. }
  340. function addObstacle(obst)
  341. {
  342.    mObstacles.push(obst);
  343. }
  344. function defineDirection(px, py)
  345. {
  346.    if(mTargetArray.length == 0)
  347.    {
  348.       return undefined;
  349.    }
  350.    if(px == undefined)
  351.    {
  352.       px = this._x;
  353.    }
  354.    if(py == undefined)
  355.    {
  356.       py = this._y;
  357.    }
  358.    if(px == mTargetX && py == mTargetY)
  359.    {
  360.       stopMoving();
  361.    }
  362.    else if(px == mTargetX)
  363.    {
  364.       if(py > mTargetY)
  365.       {
  366.          moveUp();
  367.       }
  368.       else
  369.       {
  370.          moveDown();
  371.       }
  372.    }
  373.    else if(py == mTargetY)
  374.    {
  375.       if(px > mTargetX)
  376.       {
  377.          moveLeft();
  378.       }
  379.       else
  380.       {
  381.          moveRight();
  382.       }
  383.    }
  384.    else if(px > mTargetX)
  385.    {
  386.       if(py > mTargetY)
  387.       {
  388.          moveLeftUp();
  389.       }
  390.       else
  391.       {
  392.          moveLeftDown();
  393.       }
  394.    }
  395.    else if(py > mTargetY)
  396.    {
  397.       moveRightUp();
  398.    }
  399.    else
  400.    {
  401.       moveRightDown();
  402.    }
  403. }
  404. function collideUp(x, y)
  405. {
  406.    var _loc3_ = false;
  407.    i = 0;
  408.    while(i < mObstacles.length)
  409.    {
  410.       if(mObstacles[i].hitTest(x,y - 10,true))
  411.       {
  412.          return true;
  413.       }
  414.       if(mObstacles[i].hitTest(x - 12,y - 3,true))
  415.       {
  416.          return true;
  417.       }
  418.       if(mObstacles[i].hitTest(x + 12,y - 3,true))
  419.       {
  420.          return true;
  421.       }
  422.       i++;
  423.    }
  424.    return false;
  425. }
  426. function collideDown(x, y)
  427. {
  428.    var _loc3_ = false;
  429.    i = 0;
  430.    while(i < mObstacles.length)
  431.    {
  432.       if(mObstacles[i].hitTest(x,y + 10,true))
  433.       {
  434.          return true;
  435.       }
  436.       if(mObstacles[i].hitTest(x - 12,y + 6,true))
  437.       {
  438.          return true;
  439.       }
  440.       if(mObstacles[i].hitTest(x + 12,y + 6,true))
  441.       {
  442.          return true;
  443.       }
  444.       i++;
  445.    }
  446.    return false;
  447. }
  448. function collideLeft(x, y)
  449. {
  450.    var _loc3_ = false;
  451.    i = 0;
  452.    while(i < mObstacles.length)
  453.    {
  454.       if(mObstacles[i].hitTest(x - 18,y,true))
  455.       {
  456.          return true;
  457.       }
  458.       if(mObstacles[i].hitTest(x - 18,y - 8,true))
  459.       {
  460.          return true;
  461.       }
  462.       if(mObstacles[i].hitTest(x - 18,y + 6,true))
  463.       {
  464.          return true;
  465.       }
  466.       i++;
  467.    }
  468.    return false;
  469. }
  470. function collideRight(x, y)
  471. {
  472.    var _loc3_ = false;
  473.    i = 0;
  474.    while(i < mObstacles.length)
  475.    {
  476.       if(mObstacles[i].hitTest(x + 18,y,true))
  477.       {
  478.          return true;
  479.       }
  480.       if(mObstacles[i].hitTest(x + 18,y - 6,true))
  481.       {
  482.          return true;
  483.       }
  484.       if(mObstacles[i].hitTest(x + 18,y + 8,true))
  485.       {
  486.          return true;
  487.       }
  488.       i++;
  489.    }
  490.    return false;
  491. }
  492. function moveUp()
  493. {
  494.    mDirX = 0;
  495.    mDirY = -1;
  496.    walkup();
  497. }
  498. function moveLeft()
  499. {
  500.    mDirX = -1;
  501.    mDirY = 0;
  502.    walkleft();
  503. }
  504. function moveDown()
  505. {
  506.    mDirX = 0;
  507.    mDirY = 1;
  508.    walkdown();
  509. }
  510. function moveRight()
  511. {
  512.    mDirX = 1;
  513.    mDirY = 0;
  514.    walkright();
  515. }
  516. function moveLeftUp()
  517. {
  518.    mDirX = -1;
  519.    mDirY = -1;
  520.    walkleft();
  521. }
  522. function moveLeftDown()
  523. {
  524.    mDirX = -1;
  525.    mDirY = 1;
  526.    walkleft();
  527. }
  528. function moveRightUp()
  529. {
  530.    mDirX = 1;
  531.    mDirY = -1;
  532.    walkright();
  533. }
  534. function moveRightDown()
  535. {
  536.    mDirX = 1;
  537.    mDirY = 1;
  538.    walkright();
  539. }
  540. function pausa()
  541. {
  542.    mbPaused = true;
  543. }
  544. function continua(elapsed)
  545. {
  546.    mDiagnoseTime += elapsed;
  547.    mbPaused = false;
  548. }
  549. function hideHands()
  550. {
  551.    mbHandVisible = false;
  552.    mHandLeft_mc._visible = false;
  553.    mHandRight_mc._visible = false;
  554.    mMed_mc.removeEsquerda();
  555.    mMed_mc.removeDireita();
  556. }
  557. function showHands()
  558. {
  559.    mbHandVisible = true;
  560.    if(!mHandLeft_mc.isVazia())
  561.    {
  562.       mHandLeft_mc._visible = true;
  563.       mMed_mc.addEsquerda();
  564.    }
  565.    if(!mHandRight_mc.isVazia())
  566.    {
  567.       mHandRight_mc._visible = true;
  568.       mMed_mc.addDireita();
  569.    }
  570. }
  571. function equals(v1, v2)
  572. {
  573.    if(Math.abs(v1 - v2) < 0.1)
  574.    {
  575.       return true;
  576.    }
  577.    return false;
  578. }
  579. stop();
  580. var mSexo;
  581. if(mSexo == undefined)
  582. {
  583.    setSexo(0);
  584. }
  585. var mbDiagnosing;
  586. var mDiagnoseTime;
  587. var mPaciente;
  588. var mbMoving = false;
  589. var mTargetX = 0;
  590. var mTargetY = 0;
  591. var mDirX = 0;
  592. var mDirY = 0;
  593. var mObstacles = new Array();
  594. var MIN_SPEED = 10;
  595. var MAX_SPEED = 20;
  596. var DELTA_SPEED = 10;
  597. var mZOrderObjects = new Array();
  598. var mLastZChange = null;
  599. var mbInAnim = false;
  600. var mNextAnim = 0;
  601. mHandLeft_mc._visible = false;
  602. mHandRight_mc._visible = false;
  603. var mbHandVisible = true;
  604. var mbSwapHands = false;
  605. var mTargetArray = new Array();
  606. var mbPaused = false;
  607. this.onEnterFrame = function()
  608. {
  609.    if(mbPaused)
  610.    {
  611.       return undefined;
  612.    }
  613.    now = getTimer();
  614.    if(!mbMoving)
  615.    {
  616.       if(mbDiagnosing)
  617.       {
  618.          if(now - mDiagnoseTime > 5000)
  619.          {
  620.             mbDiagnosing = false;
  621.             stopleft();
  622.             showHands();
  623.             var _loc3_ = {bed:mPaciente.getCamaID(),tipo:mPaciente.getTipo(),id:mPaciente.getID()};
  624.             maoVazia = getMaoVazia();
  625.             if(maoVazia != null)
  626.             {
  627.                maoVazia.setReceita(_loc3_);
  628.                maoVazia._visible = true;
  629.                if(maoVazia == mHandLeft_mc)
  630.                {
  631.                   mMed_mc.addEsquerda();
  632.                }
  633.                else
  634.                {
  635.                   mMed_mc.addDireita();
  636.                }
  637.                updateItem();
  638.             }
  639.             mbInAnim = false;
  640.             mNextAnim = 0;
  641.          }
  642.       }
  643.       else if(!isCarrying())
  644.       {
  645.          if(!mbInAnim && mNextAnim == 0)
  646.          {
  647.             waitTime = Math.floor(Math.random() * 7000);
  648.             mNextAnim = now + waitTime;
  649.          }
  650.          if(now >= mNextAnim && mNextAnim > 0)
  651.          {
  652.             mbInAnim = true;
  653.             mNextAnim = 0;
  654.             if(Math.random() > 0.4)
  655.             {
  656.                dontknow();
  657.             }
  658.             else
  659.             {
  660.                hey();
  661.             }
  662.          }
  663.       }
  664.    }
  665.    else if(!equals(this._x,mTargetX) || !equals(this._y,mTargetY))
  666.    {
  667.       if(mDirX == 0 && mDirY == 0)
  668.       {
  669.          defineDirection();
  670.       }
  671.       else
  672.       {
  673.          dirspeed = MAX_SPEED;
  674.          if(mDirX * mDirY != 0)
  675.          {
  676.             dirspeed = 0.7071 * MAX_SPEED;
  677.          }
  678.          newX = this._x + mDirX * dirspeed;
  679.          newY = this._y + mDirY * dirspeed;
  680.          if(mDirX != 0 && (newX - mTargetX) * (this._x - mTargetX) <= 0)
  681.          {
  682.             newX = mTargetX;
  683.             if(mDirY != 0 && (newY - mTargetY) * (this._y - mTargetY) <= 0)
  684.             {
  685.                newY = mTargetY;
  686.                stopMoving();
  687.             }
  688.             else if(!equals(newY,mTargetY))
  689.             {
  690.                defineDirection(newX,newY);
  691.             }
  692.             else
  693.             {
  694.                stopMoving();
  695.             }
  696.          }
  697.          else if(mDirY != 0 && (newY - mTargetY) * (this._y - mTargetY) <= 0)
  698.          {
  699.             newY = mTargetY;
  700.             if(!equals(newX,mTargetX))
  701.             {
  702.                defineDirection(newX,newY);
  703.             }
  704.          }
  705.          pos = new Object();
  706.          pos.x = newX;
  707.          pos.y = newY;
  708.          _parent.localToGlobal(pos);
  709.          speed = MAX_SPEED;
  710.          collision = false;
  711.          if(mDirY < 0)
  712.          {
  713.             collision = collideUp(pos.x,pos.y);
  714.             while(collision && speed > MIN_SPEED)
  715.             {
  716.                speed -= DELTA_SPEED;
  717.                newY = this._y + mDirY * speed;
  718.                pos.x = newX;
  719.                pos.y = newY;
  720.                _parent.localToGlobal(pos);
  721.                collision = collideUp(pos.x,pos.y);
  722.             }
  723.             if(collision)
  724.             {
  725.                mDirY = 0;
  726.                if(equals(this._x,mTargetX))
  727.                {
  728.                   stopMoving();
  729.                }
  730.                else if(newX < mTargetX)
  731.                {
  732.                   moveRight();
  733.                }
  734.                else if(newX > mTargetX)
  735.                {
  736.                   moveLeft();
  737.                }
  738.                else
  739.                {
  740.                   stopMoving();
  741.                }
  742.             }
  743.          }
  744.          else if(mDirY > 0)
  745.          {
  746.             collision = collideDown(pos.x,pos.y);
  747.             while(collision && speed > MIN_SPEED)
  748.             {
  749.                speed -= DELTA_SPEED;
  750.                newY = this._y + mDirY * speed;
  751.                pos.x = newX;
  752.                pos.y = newY;
  753.                _parent.localToGlobal(pos);
  754.                collision = collideDown(pos.x,pos.y);
  755.             }
  756.             if(collision)
  757.             {
  758.                mDirY = 0;
  759.                if(equals(this._x,mTargetX))
  760.                {
  761.                   stopMoving();
  762.                }
  763.                else if(newX < mTargetX)
  764.                {
  765.                   moveRight();
  766.                }
  767.                else if(newX > mTargetX)
  768.                {
  769.                   moveLeft();
  770.                }
  771.                else
  772.                {
  773.                   stopMoving();
  774.                }
  775.             }
  776.          }
  777.          else if(mDirX < 0)
  778.          {
  779.             collision = collideLeft(pos.x,pos.y);
  780.             while(collision && speed > MIN_SPEED)
  781.             {
  782.                speed -= DELTA_SPEED;
  783.                newX = this._x + mDirX * speed;
  784.                pos.x = newX;
  785.                pos.y = newY;
  786.                _parent.localToGlobal(pos);
  787.                collision = collideLeft(pos.x,pos.y);
  788.             }
  789.             if(collision)
  790.             {
  791.                mDirX = 0;
  792.                if(equals(this._y,mTargetY))
  793.                {
  794.                   stopMoving();
  795.                }
  796.                else if(newY < mTargetY)
  797.                {
  798.                   moveDown();
  799.                }
  800.                else if(newY > mTargetY)
  801.                {
  802.                   moveUp();
  803.                }
  804.                else
  805.                {
  806.                   stopMoving();
  807.                }
  808.             }
  809.          }
  810.          else if(mDirX > 0)
  811.          {
  812.             collision = collideRight(pos.x,pos.y);
  813.             while(collision && speed > MIN_SPEED)
  814.             {
  815.                speed -= DELTA_SPEED;
  816.                newX = this._x + mDirX * speed;
  817.                pos.x = newX;
  818.                pos.y = newY;
  819.                _parent.localToGlobal(pos);
  820.                collision = collideRight(pos.x,pos.y);
  821.             }
  822.             if(collision)
  823.             {
  824.                mDirX = 0;
  825.                if(equals(this._y,mTargetY))
  826.                {
  827.                   stopMoving();
  828.                }
  829.                else if(newY < mTargetY)
  830.                {
  831.                   moveDown();
  832.                }
  833.                else if(newY > mTargetY)
  834.                {
  835.                   moveUp();
  836.                }
  837.                else
  838.                {
  839.                   stopMoving();
  840.                }
  841.             }
  842.          }
  843.          if(!collision)
  844.          {
  845.             this._x = newX;
  846.             this._y = newY;
  847.             updateItem();
  848.             updateZOrder();
  849.          }
  850.       }
  851.    }
  852.    else
  853.    {
  854.       stopMoving();
  855.    }
  856. };
  857.